import Vue from 'vue'

// 需要屏蔽的账户地址列表
export const BLOCKED_ACCOUNTS = [
  '0xd6690e17b2478ffb7537a5f19791ecd8a03adb69', // 屏蔽重复的默认账户地址
];

// 商品相关API
export const goodsApi = {
  // 获取所有账户
  getAccounts() {
    return Vue.prototype.$http.get('/api/goods/accounts')
  },
  
  // 获取商品列表
  getGoodsList(account) {
    return Vue.prototype.$http.get(`/api/goods/api/goods/list?account=${account}`)
      .then(response => {
        if (response.data.success && response.data.goods) {
          // 过滤掉无效的商品数据
          response.data.goods = response.data.goods.filter(good => {
            return good && good.name && good.name.trim() !== "";
          });
        }
        return response;
      });
  },
  
  // 获取商品详情
  getGoodsDetail(goodsId, account) {
    return Vue.prototype.$http.get(`/api/goods/get?goodsId=${goodsId}&account=${account}`)
      .then(response => {
        if (response.data.success && response.data.goods) {
          // 验证商品数据有效性 (注意：ID为0的是有效商品)
          const goods = response.data.goods;
          if (goods.id === undefined || goods.id === null || goods.id === "-1" || !goods.name || goods.name.trim() === "") {
            response.data.success = false;
            response.data.message = "无效的商品数据";
            response.data.goods = null;
          }
        }
        return response;
      });
  },
  
  // 添加商品
  addGoods(data) {
    return Vue.prototype.$http.post('/api/goods/add', data)
  },
  
  // 更新商品
  updateGoods(data) {
    return Vue.prototype.$http.post('/api/goods/update', data)
  },
  
  // 转移商品
  transferGoods(data) {
    console.log('API服务发送转移请求:', data);
    
    // 构建修改后的请求数据 - 确保发送正确的参数
    const requestData = {
      goodsId: data.goodsId,
      to: data.to, // 接收者地址
      account: data.account, // 操作账户名称
      currentOwner: data.currentOwner // 添加当前所有者信息以便后端验证
    };
    
    return Vue.prototype.$http.post('/api/goods/transfer', requestData)
  },
  
  // 删除商品
  removeGoods(data) {
    return Vue.prototype.$http.post('/api/goods/remove', data)
  },
  
  // 重置商品ID
  resetGoodsId(data = {}) {
    return Vue.prototype.$http.post('/api/goods/reset', data)
  },
  
  // 保存记录数据
  saveRecords() {
    return Vue.prototype.$http.get('/api/goods/api/system/save-records')
  }
}

// 格式化时间戳为可读格式
export function formatTimestamp(timestamp) {
  if (!timestamp) return '-'
  
  try {
    // 确保timestamp是一个数字
    const ts = typeof timestamp === 'string' ? parseInt(timestamp) : timestamp
    
    // 检查时间戳是否有效
    if (isNaN(ts) || ts < 0) return '-'
    
    // 特殊处理：1745228048608这种特别大的时间戳，可能是毫秒级时间戳
    if (ts > 10000000000) {
      // 如果时间戳大于10位数，可能是毫秒级时间戳，直接用new Date处理
      const date = new Date(ts);
      
      // 检查日期是否有效
      if (!isNaN(date.getTime())) {
        return date.toLocaleDateString('zh-CN', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit', 
          hour: '2-digit',
          minute: '2-digit',
          second: '2-digit',
          hour12: false
        }).replace(/\//g, '-')
      }
      
      // 尝试将其视为自1970年以来的毫秒数
      // 直接除以1000，转换为秒级时间戳再处理
      const secondsTs = Math.floor(ts / 1000);
      const dateFromSeconds = new Date(secondsTs * 1000);
      
      if (!isNaN(dateFromSeconds.getTime())) {
        return dateFromSeconds.toLocaleDateString('zh-CN', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit',
          hour: '2-digit',
          minute: '2-digit',
          second: '2-digit',
          hour12: false
        }).replace(/\//g, '-')
      }
    }
    
    // 标准时间戳处理 (Unix秒级时间戳)
    const date = new Date(ts * 1000)
    
    // 检查日期是否有效
    if (isNaN(date.getTime())) return '-'
    
    // 使用更明确的格式化
    return date.toLocaleDateString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: false
    }).replace(/\//g, '-')
  } catch (error) {
    console.error('时间戳格式化错误:', error, timestamp)
    return '-'
  }
}

// 处理错误
export function handleApiError(error) {
  let message = '操作失败'
  if (error.response) {
    message = error.response.data.message || '请求失败'
  } else if (error.message) {
    message = error.message
  }
  Vue.prototype.$message.error(message)
  return Promise.reject(error)
} 